Data processors have been developed to function as binary machines whose inputs and outputs are either interpreted as ones or zeroes, and no other possibilities may exist. While this works well in most situations, sometimes an answer is not simply "yes" or "no," but something in between. A concept referred to as "fuzzy logic" was developed to enable data processors based on binary logic to provide an answer between "yes" and "no."
Fuzzy logic is a logic system which has membership functions with fuzzy boundaries. Membership functions translate subjective expressions, such as "temperature is warm," into a value which typical data processors can recognize. A label such as "warm" is used to identify a range of input values whose boundaries are not points at which the label is true on one side and false on the other side. Rather, in a system which implements fuzzy logic, the boundaries of the membership functions gradually change and may overlap a boundary of an adjacent membership set. Therefore, a degree of membership is typically assigned to an input value. For example, given two membership functions over a range of temperatures, an input temperature may fall in the overlapping areas of both the functions labeled "cool" and "warm." Further processing would then be required to determine a degree of membership in each of the membership functions (i.e. if the input temperature fits into each of the membership sets, cool and warm).
A step referred to as "fuzzification" is used to relate an input to a membership function in a system which implements fuzzy logic. The fuzzification process attaches concrete numerical values to subjective expressions such as "the temperature is warm." These numerical values attempt to provide a good approximation of human perception which is not generally limited to an environment of absolute truths. After the fuzzification step, a rule evaluation step is executed. During execution of the rule evaluation step, a technique referred to as "min-max" inference is used to calculate numerical conclusions to linguistic rules defined by a user. Conclusions from the rule evaluation step are referred to as "fuzzy outputs" and may be true to varying degrees. Thus, competing results may be produced. A last step in the fuzzy logic process is referred to as "defuzzification." As the name implies, defuzzification is the process of combining all of the fuzzy outputs into a composite result which may be applied to a standard data processing system. For more information about fuzzy logic, refer to an article entitled "Implementing Fuzzy Expert Rules in Hardware" by James M. Sibigtroth. The article was published in the April, 1992 issue of AI EXPERT on pages 25 through 31.
Typically, the fuzzification step has been implemented with software programs which are executed either by a peripheral device or by a data processor. Such software programs calculate a degree of membership using a mathematical equation which requires extensive processing time. Therefore, although the software program provides an accurate result, the processing time generally limits the performance of a system in which it is implemented. Another common software solution implements a "table look-up" routine in which a table of data stored in memory is accessed for a value which corresponds to a particular input value. Although quicker than a mathematical calculation, the table look up routine requires a large amount of dedicated memory which is expensive to implement. Hardware solutions to the implementation of the fuzzification step provide results even more quickly. However, hardware solutions generally require a large amount of dedicated circuitry which is inflexible. Although hardware solutions to the fuzzification step are typically faster than software implementations, hardware solutions require a large amount of dedicated circuit area and are often too expensive to implement in a data processing system.
Therefore, a need exists for a circuit or method for performing the fuzzification step quickly, but without costly hardware requirements. The speed typically associated with a hardware solution is needed without the memory usually associated with a software solution.